type Merage3<T> = {
  [P in keyof T]: T[P];
};

type RequiredByKeys<T, K = keyof T> = Merage3<
  {
    [P in keyof T as P extends K ? P : never]-?: T[P];
  } & {
    [P in keyof T as P extends K ? never : P]: T[P];
  }
>;

type AA = RequiredByKeys<User, "name">;
